4.2. Руководство по инсталляции сервиса системных настроек Vault

4.2.1. Назначение и общий функционал работы с Vault

Сервис системных настроек Vault предназначен для безопасного управления конфиденциальной информацией в современных архитектурах приложений.

Vault используется Системой в качестве специального сервера по хранению секретных данных. Вместо того, чтобы хранить данные в конфигурации и/или в переменных окружения, Система запрашивает специальное хранилище (Vault) предоставить тот или иной параметр.

Более подробную информацию о сервисе системных настроек Vault можно посмотреть здесь: https://www.vaultproject.io/.

4.2.2. Установка и первичная настройка Vault

Подробная информация об установке Vault находится здесь: https://learn.hashicorp.com/vault/getting-started/install. Следуя шагам Руководства https://learn.hashicorp.com/vault/getting-started/install, можно получить полную информацию о настройке и работе с Vault.

4.2.2.1. Установка Vault

Перед установкой Vault необходимо установить Docker. Подробнее об установке и настройке Docker можно посмотреть здесь: https://docs.docker.com/get-started/.

Для установки Vault нужно скачать образ Vault из Docker, выполнив в командной строке команду:

docker pull vault

Затем следует запустить контейнер с Vault в режиме сервера, выполнив команду:

docker run --cap-add=IPC_LOCK -d --name=vault -p 8200:8200 -e
  'VAULT_LOCAL_CONFIG={"backend": {"file": {"path": "/vault/file"}},
    "default_lease_ttl": "168h", "max_lease_ttl": "720h",
    "listener":{"tcp":{"address":"0.0.0.0:8200","tls_disable":1}},"ui":true}'
   vault server

После выполнения этой команды Vault будет доступен на локальной машине по адресу http://localhost:8200.

4.2.2.2. Первичная настройка Vault

Для первичной настройки Vault нужно сначала открыть интерфейс Vault в браузере по ссылке http://localhost:8200.

При первом запуске Vault предложит создать ключи доступа к хранилищу (Рис. 4.2.1). Необходимо указать два значения:

Key shares
Общее количество создаваемых ключей.
Key threshold
Количество ключей, которое нужно ввести для разблокировки хранилища. То есть для разблокировки хранилища необходимо ввести «Key threshold» ключей из «Key shares» созданных ключей.
../_images/Keys.png

Рис. 4.2.1 Создание ключей для доступа к хранилищу

Затем необходимо нажать на кнопку «Initialize» (Рис. 4.2.1).

После нажатия на кнопку «Initialize» откроется форма с созданными ключами и токеном для входа (Рис. 4.2.2).

../_images/Keys1.png

Рис. 4.2.2 Созданные ключи и токен

Можно посмотреть созданные ключи и токен, нажав на кнопку Show_ic «Показать» (Рис. 4.2.2).

../_images/Keys2.png

Рис. 4.2.3 Сгененированный токен

Ключи и токен необходимо сохранить. Для сохранения ключей и токена можно скачать файл с ключами, нажав на ссылку «Download keys» (Рис. 4.2.4).

../_images/Keys3.png

Рис. 4.2.4 Ссылка «Download keys» для сохранения файла с ключами и токеном

После нажатия на ссылку «Download keys» откроется форма для сохранения файла, в которой необходимо выбрать пункт «Сохранить файл» и нажать на кнопку «Ок» (Рис. 4.2.5).

../_images/Keys4.png

Рис. 4.2.5 Сохранение файла с ключами и токеном

Пример файла:

{
"keys": [
    "276145fff95fa8be222101f9e0394f97e1feaf3a5c46f08dab07cc335bc1c2c999",
    "dba61c998d0e1f3c7d780c02c480e666ba7ca13a308cac59ef1b624b5e3a32ed48",
    "b21363f9051de24336430d3dac1c06c792b12b82d550cda6489f2faaa641f7cdf0",
    "570659b121e2ecf8ed4becc9170def4915e8a7c3c59bcebb6945ae3ca587e886a5",
    "eba1bd6e8ca225d9839ac70f91c761bfda6d521b905f57605d3dc2362774339451",
    "f145a3af32776ed08aa8c19ab1ed68871cb1016e5767f5d7d8f36db679cdf358bd"
],
"keys_base64": [
    "J2FF//lfqL4iIQH54DlPl+H+rzpcRvCNqwfMM1vBwsmZ",
    "26YcmY0OHzx9eAwCxIDmZrp8oTowjKxZ7xtiS146Mu1I",
    "shNj+QUd4kM2Qw09rBwGx5KxK4LVUM2mSJ8vqqZB983w",
    "VwZZsSHi7PjtS+zJFw3vSRXop8PFm867aUWuPKWH6Ial",
    "66G9boyiJdmDmscPkcdhv9ptUhuQX1dgXT3CNid0M5RR",
    "8UWjrzJ3btCKqMGase1ohxyxAW5XZ/XX2PNttnnN81i9"
],
"root_token": "s.RoEWWpedgmLegifVCjpvz8n9"
}

Здесь:

  • «keys» - созданные ключи.
  • «root_token» - созданный токен.

Для продолжения настройки необходимо нажать на кнопку «Continue to Unseal» (Рис. 4.2.5).

После этого появится форма «Unseal Vault» (Рис. 4.2.6), в поле «Master Key Portion» которой необходимо ввести то количество ключей, которое было указано в поле «Key threshold» на форме старта инициализации Vault (Рис. 4.2.1).

../_images/Vault.png

Рис. 4.2.6 Форма «Unseal Vault»

После каждого ввода ключа в поле «Master Key Portion» необходимо нажимать кнопку «Unseal» (Рис. 4.2.6).

После того как необходимое количество ключей введено, появится форма «Sign in to Vault», в поле «Token» которой необходимо ввести токен, а затем нажать на этой форме кнопку «Sign in» (Рис. 4.2.7).

../_images/Vault1.png

Рис. 4.2.7 Форма «Sign in to Vault»

После чего откроется cервис системных настроек Vault (Рис. 4.2.8).

../_images/Vault2.png

Рис. 4.2.8 Cервис системных настроек Vault

4.2.3. Создание нового хранилища и наборов настроек

4.2.3.1. Создание нового хранилища

На вкладке «Secrets» необходимо создать новое хранилище. Для этого нужно нажать кнопку «Enable new engine» (Рис. 4.2.8).

После этого откроется форма «Enable a Secrets Engine» для выбора типа хранилища (Рис. 4.2.9).

../_images/Vault3.png

Рис. 4.2.9 Выбор типа хранилища

Необходимо выбрать тип «KV» (key value) и нажать на кнопку «Next» (Рис. 4.2.9).

После этого откроется форма «Enable KV Secrets Engine» (Рис. 4.2.10), в которой необходимо заполнить следующие поля:

Path
Указывается название хранилища.
Versions
Указывается номер версии хранилища.
../_images/Vault4.png

Рис. 4.2.10 Форма «Enable KV Secrets Engine»

По кнопке «Metod Options» разворачивается форма с дополнительными параметрами (Рис. 4.2.11).

../_images/Vault5.png

Рис. 4.2.11 Дополнительные параметры

Можно оставить значения всех полей на форме «Metod Options» без изменений. Более подробно об опциях можно посмотреть здесь: https://www.vaultproject.io/.

Для завершения создания хранилища необходимо нажать на кнопку «Enable Engine» (Рис. 4.2.10). После этого откроется созданное хранилище (Рис. 4.2.12).

../_images/Vault6.png

Рис. 4.2.12 Новое хранилище

4.2.3.2. Создание набора настроек

Настройки создаются и хранятся внутри набора настроек (secrets). Это сделано для удобства объединения настроек по определенному принципу. Таким образом, сначала необходимо создать набор настроек.

Создание набора настроек выполняется по кнопке «Create secret» (Рис. 4.2.12). После нажатия на эту кнопку откроется форма «Create secret» (Рис. 4.2.13).

../_images/Vault7.png

Рис. 4.2.13 Создание набора настроек

В этой форме необходимо заполнить следующие поля:

Parh for this secret
Указывается название набора настроек.
Maximum Number of Versions
Указывается количество сохраняемых версий набора настроек, до каждой из которых можно будет «откатиться» при необходимости.
Version data

Здесь по кнопке «Add» добавляются настройки. У каждой новой настройки необходимо заполнить поля (Рис. 4.2.14):

key
Название настройки.
value
Значение настройки.
../_images/Vault8.png

Рис. 4.2.14 Пример заполнения полей настройки

После того как все настройки добавлены, для сохранения текущей версии набора настроек необходимо нажать кнопку «Save» (Рис. 4.2.14). После этого текущая версия набора настроек будет сохранена (Рис. 4.2.15).

../_images/Vault9.png

Рис. 4.2.15 Сохраненная версия набора настроек

Созданные настройки можно посмотреть в виде строки JSON. Для этого необходимо включить переключатель «JSON» (Рис. 4.2.15). После этого созданные настройки отобразятся в виде строки JSON (Рис. 4.2.16).

../_images/Vault10.png

Рис. 4.2.16 Настройки в виде строки JSON

Для возврата внешнего вида настроек в виде набора полей необходимо выключить переключатель «JSON» (Рис. 4.2.16).

Примечание

Сохраненные версии набора настроек изменить нельзя. Для внесения изменений в набор настроек необходимо создать новую версию данного набора.

Аналогичным образом создается необходимое количество наборов настроек.

4.2.3.3. Создание новой версии набора настроек

Создание новых настроек, изменение или удаление существующих настроек выполняется в новой версии набора настроек.

Создание новой версии набора настроек выполняется по кнопке «Create new version» (Рис. 4.2.17).

../_images/Vault11.png

Рис. 4.2.17 Кнопка «Create new version»

После нажатия на эту кнопку будет создана и сразу же откроется на просмотр и изменение новая версия набора настроек (Рис. 4.2.18).

../_images/Vault12.png

Рис. 4.2.18 Новая версия набора настроек до внесения изменений

В эту версию нужно внести необходимые изменения. Например, по кнопке «Add» можно добавить еще одну настройку. Для сохранения изменений следует нажать на кнопку «Save» (Рис. 4.2.19).

../_images/Vault13.png

Рис. 4.2.19 Изменения в новой версии набора настроек

В результате в новую версию набора настроек будет добавлена еще одна настройка (Рис. 4.2.20).

../_images/Vault14.png

Рис. 4.2.20 Новая версия набора настроек

Отображение настроек в виде строки JSON также покажет новую настройку (Рис. 4.2.21).

../_images/Vault15.png

Рис. 4.2.21 Настройки в виде строки JSON в последней сохраненной версии

Изменения в новых версиях набора настроек можно выполнять и в режиме строки JSON (Рис. 4.2.22).

../_images/Vault16.png

Рис. 4.2.22 Выполнение изменений версии в режиме строки JSON

После сохранения текущей версии набора настроек все изменения, выполненные в режиме строки JSON, появятся в последней сохраненной версии набора настроек (Рис. 4.2.23, Рис. 4.2.24).

../_images/Vault17.png

Рис. 4.2.23 Настройки в виде строки JSON в последней сохраненной версии

../_images/Vault18.png

Рис. 4.2.24 Настройки в виде набора полей в последней сохраненной версии